package com.epfly.promo.activity.entity;

import lombok.Data;

import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.time.LocalDateTime;

/**
 * 活动表
 *
 * 活动生效触发机制
 * 1.新建或修改时，活动开始时间小于等于到当前时间，即新建或修改后立即生效。
 * 2.定时任务执行，找到当前时间小于等于"活动开始时间"的"活动"，使其生效。
 *
 * 活动终止触发机制
 * 1.手工直接终止
 * 2.新建或修改时，活动结束时间小于等于当前时间，即新建或修改后立即终止。
 * 3.定时任务执行，找到当前时间大于等于"活动结束时间"的"活动"，使其终止。
 *
 *
 * 活动生效或终止的定时任务，由活动的状态来衍生任务
 * 任务一：待生效-->生效中
 * 任务二：生效中-->已终止
 *
 */

@Data
@Table(name = "tbl_activity")
public class ActivityEntity {

    /**
     * 活动ID(自增ID)
     */
    @Id
    @GeneratedValue(generator = "JDBC")
    private Long id;

    /**
     * 所属商户
     */
    private String merchantId;

    /**
     * 活动名称
     */
    private String activityName;

    /**
     * 活动类型:1.订单优惠;2.菜品优惠
     */
    private Byte activityType;

    /**
     * 优惠方式:1.满减;2.折扣;5.菜品分类折扣;6.菜品折扣;7.特价菜;
     */
    private Byte discountType;

    /**
     * 活动开始时间
     */
    private Long activityStartTime;

    /**
     * 活动结束时间
     */
    private Long activityEndTime;

    /**
     * 客户群体:0.不限;1.散户;2.会员;3.员工
     */
    private String activityObjectType;

    /**
     * 0.不限;2.指定部门;3:指定职务;
     */
    private Byte activityObjectTypeCascade;

    /**
     * 档口类型:0.不限;1.指定档口
     */
    private Byte storeStyle;

    /**
     * 适用星期：0.不限;1.周一;2.周二;3.周三;4.周四;5.周五;6.周六;7.周日
     * 不限情况下值为0
     * 限制情况下值为 ;1;2;
     */
    private String effectiveDays;

    /**
     * 活动节假日:0.不限;1.节假日不可用
     */
    private Byte isSuiteHoliday;


    /**
     * 下单方式:0.不限;1.绑盘;2.后支付;3.点餐;4.视觉识别;5.预定;
     */
    private String effectiveOrderMethods;

    /**
     * 取餐方式:0.不限;1.堂食;2.配送;3.自提
     */
    private String effectiveTakeMethods;

    /**
     * 备注
     */
    private String remark;

    /**
     * 是否启用:0.停用;1.启用
     */
    private Byte isActive;

    /**
     * 是否终止:0.待生效;1.生效中;2.已终止;
     */
    private Byte status;

    /**
     * 追踪状态:0.未追踪;1.已追踪。
     */
    private Byte traceStartStatus;

    private Byte traceEndStatus;

    /**
     * 删除标志:0.正常;1.删除
     */
    private Byte delFlag;

    /**
     * 修改人
     */
    private String updateBy;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 创建人
     */
    private String createBy;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;
}
